#include <stdio.h>

void generateMagicSquare(int n) {
    int magic[n][n];
    int i, j;
    
    // 初始化矩阵为0
    for(i = 0; i < n; i++) {
        for(j = 0; j < n; j++) {
            magic[i][j] = 0;
        }
    }
    
    // 生成魔方阵（奇数阶）
    i = n/2;
    j = n-1;
    
    for(int num = 1; num <= n*n; ) {
        if(i == -1 && j == n) {
            j = n-2;
            i = 0;
        } else {
            if(j == n) j = 0;
            if(i < 0) i = n-1;
        }
        
        if(magic[i][j] != 0) {
            j -= 2;
            i++;
            continue;
        } else {
            magic[i][j] = num++;
        }
        
        j++; i--;
    }
    
    // 打印魔方阵
    printf("%d阶魔方阵:\n", n);
    for(i = 0; i < n; i++) {
        for(j = 0; j < n; j++) {
            printf("%3d ", magic[i][j]);
        }
        printf("\n");
    }
}

int main() {
    generateMagicSquare(3);  // 生成3阶魔方阵
    return 0;
}